package com.leyou.common.advice;

import com.leyou.common.exception.LyException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

//Spring提供了一个通用的异常处理器ControllerAdvice，
// 可以非常方便的帮助我们实现统一的异常处理。
// 默认情况下，会拦截所有加了@Controller的类
// （重点）aop,把所扫描到的Controller的方法视为切点，异常抛出后通知
@ControllerAdvice
@Slf4j
public class ControllerExceptionAdvice {

    /**
     * 统一异常处理方法，@ExceptionHandler(RuntimeException.class)声明这个方法处理RuntimeException这样的异常
     * @param e 捕获到的异常
     * @return 返回给页面的状态码和信息
     */

    @ExceptionHandler(LyException.class)
    public ResponseEntity<String> handleLyException(LyException e) {
        return ResponseEntity.status(e.getStatus()).body(e.getMessage());
    }

//    @ExceptionHandler(RuntimeException.class)
////    public ResponseEntity<String> handleLyException(RuntimeException e) {
////        //return ResponseEntity.status(400).body(e.getMessage());
////        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
////    }
}
